var baseUrl_online = "http://47.104.23.200/yangzi"; //线上
var baseUrl_local = "http://localhost:8080"; //本地
var api;
$.class = {
  __proto__: null,
  1: '土建专业',
  3: '工艺管道专业',
  4: '仪表专业',
  6: '电气专业',
  7: '设备专业',
  9: '焊接专业',
  12: '安全专业',
  11: '混凝土旁站',
  12: '桩基旁站',
  13: '地基旁站',
  2: '钢结构安装专业',
  5: '给排水专业',
  111: '混凝土浇筑旁站',
  112: '大体积混凝土浇筑旁站',
  113: '预应力混凝土张拉旁站',
  114: '大型机组二次灌浆旁站',
  115: '自定义旁站',
  116: '钻孔灌注桩旁站',
  117: '预应力砼管桩旁站',
  118: '旋挖成孔灌注桩旁站',
  124: '阀门试压',
  204: '管道补偿器安装调试',
  30008: '保冷首件旁站',
  30009: '压力管道系统压力试验',
  400006: '无压力管道闭水试验',
  120: '强夯地基施工旁站',
  121: '水泥粉煤灰碎石桩施工旁站',
  122: '夯实水泥土桩施工旁站',
  131: '仪表压力管道系统压力试验',
  202: '仪表间或机组控制系统接地电阻测试',
  30003: '仪表联锁报警调试',
  30004: '仪表阀门试验',
  400002: '电动仪表阀门试验',
  141: '静电、防雷接地线的连接首件',
  201: '电气6KV以上电机受电前检查确认、空载运行',
  30001: '变压器冲击试验',
  30002: '35kV以上高压电器耐压试验',
  400001: '35kV以上电缆耐压试验',
  151: '塔设备进场检验',
  203: '大机组找正、二次灌浆',
  30005: '现场设备强度及严密性试验',
  30006: '大型设备吊装',
  30007: '机组轴对中-设计出口压力≥10MPa或转速＞10000r／min的机组轴对中',
  400003: '机组单机试车-设计出口压力≥10MPa或转速＞10000r／min的机组单机试车',
  400004: '6kv以上驱动的泵单机试车',
  400005: '储罐底板焊缝真空箱试验',
  123: '管道专业',
  30010: '焊接PMI旁站',
  30011: '特殊材质焊接焊工首道焊缝的焊接过程旁站',
  30012: '现场组焊设备产品焊接试板的焊接过程旁站',
  130: '仪表专业',
  140: '电气专业',
  150: '设备专业',
  30000: '焊接专业',
};
export default api = $.api = {
  __proto__: null,
  // baseUrl_file,
  baseUrl_online,
  baseUrl_local,

  uploadFile: "/file/uploadFile", //文件上传
  uploadFileWithName: "/file/uploadFileWithName", //文件上传,带文件名
  login: "/user/login", //登录
  doLoginOut: "/login/doLoginOut", //退出
  addUser: "/user/addUser", //用户管理 新增
  getAllUser: "user/getAllUser",//用户管理 查询
  updateUser: "/user/updateUser",//用户管理 编辑
  updateUserState: "user/updateUserState",//用户管理 禁用启用
  updateUserPassWord: "/user/updateUserPassWord",//修改密码
  addUserMenu: "/userMenu/addUserMenu",//权限管理 权限
  getAllSupplier: "/supplier/getAllSupplier",//供应商管理查询
  addSupplier: "/supplier/addSupplier",//供应商管理 新增
  editSupplier: "/supplier/editSupplier",//供应商管理 编辑
  deleteSupplier: "/supplier/deleteSupplier",//供应商管理 删除
  getUserProject: "/user/getUserProject",//获取用户列表
  getAllHelp: "/help/getAllHelp",//帮助管理 查询
  updateHelp: "/help/updateHelp",//帮助管理 修改
  // getAllJournalDetail: "/journalDetail/getAllJournalDetail",//日志管理 查询
  getAllStationByuserId: "/journalDetail/getAllStationByuserId",//日志管理 查询
  getJournalDetailByStationId: "/journalDetail/getJournalDetailByStationId",//日志管理 详情
  getWarningByStationId: "/journalDetail/getWarningByStationId",//日志管理 预警
  getAllProject: "/project/getAllProject",//项目管理 查询
  deleteProject: "/project/deleteProject",//项目管理 删除
  getStationByProjectId: "/station/getStationByProjectId",//项目管理 详情
  getStationByProjectIdPc: "/station/getStationByProjectIdPc",//项目管理 详情(新)
  addProject: "/project/addProject",//项目管理 新增
  getStationByStationId: "/station/getStationByStationId",//项目管理 报表详情

  getPictureByUserId: "/picture/getPictureByUserId",//轮播图管理
  addPicture: "/picture/addPicture",//轮播图管理
  getAllMajor: "/major/getAllMajor",//获取专业
  updateProject: "/project/updateProject",//项目管理 修改
  updateProjectSupplierAndPosition: "/project/updateProjectSupplierAndPosition",//项目管理 修改
  createWorld: "/station/createWorld",//项目管理 导出
  // uploadPicWithName: "/picture/uploadFileWithName",//轮播图 上传
  uploadPic: "http://47.104.23.200/yangzi/picture/uploadFile",//轮播图 上传
  importExcel: "/user/importExcel",//批量导入
  // getJournalDetailByStationId: "/journalDetail/getJournalDetailByStationId",//查询报警
  uploadFilePdf: "/picture/uploadFilePdf",//字典规范 pdf
  newMyInfo: '/user/getUserByUserId', //实时更新我的信息
  upPDF: '/help/updateFileNameAndFileUrl', //上传
  getAllFeedBack: 'feedBack/getAllFeedBack',//意见反馈
  forgetPassword: '/user/forgetPassword',//忘记密码
  getVerificationCode: '/verificationCode/getVerificationCode',//获取验证码
  createPicture: '/stationPicture/createPicture',//导出图片
  exportBatch: '/station/exportBatch',//批量导出word、图片
};

/* ***********以下接口$.post方法***************/
import {stringify} from 'qs';
import axios from 'axios';

axios.interceptors.request.use(config => {
  // loading
  return config
}, error => {
  return Promise.reject(error)
})

axios.interceptors.response.use(response => {
  return response
}, error => {
  return Promise.resolve(error.response)
})
const $forObj = forObj;
const JS = JSON.stringify;
/* $.post([host,api],{id:111},(res,err)=>{ err === true 表示失败 }) */
const ignoreUpdate = {
  __proto__: null,
  login: true,
  newMyInfo: true,
  getVerificationCode: true,
  forgetPassword: true,
};
var lastUpdate = false;
$.post = function (url, data, complete, bool) {
  ignoreUpdate[url] === undefined && lastUpdate === false && (lastUpdate = true, $.update());
  var root = false;
  if (url !== null && typeof url === 'object') {
    (root = url[0]).includes('/') === false && (root = api[root]);
    if (root === undefined) return console.error('请检查root域名地址!!');
    url = url[1];
  }
  ;
  url.includes('/') === false && (url = api[url]);
  if (url === undefined) return console.error('请检查url接口地址!!');

  const isCall = typeof complete === 'function'; //判断是否有回调函数,防止报错
  $forObj(data, (v, k) => {
    if (v === null) return data[k] = '';
    if (typeof v === 'object') {
      data[k] = JS(v);
    }
  });
  data = stringify(data);
  // return;
  return axios({
    method: 'post',
    baseURL: root || baseUrl_online,
    // baseURL: root || baseUrl_local,
    url: url,
    // withCredentials: true,
    data: data,
    timeout: 90000,
    headers: {
      Accept: "application/json",
      "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
    }
  })
    .then(
      response => {
        const data = response.data;
        const status = response.status;
        const isError = (data.result !== 'success' || status !== 200 && status !== 304);
        data.success = !isError;
        isCall && complete(data, isError);
        return data;
      }
    )
    .catch(
      response => {
        isCall && complete(response.data, 1);
        return false;
      }
    )
};

$.file = function (url, formData, then) {
  // console.error(url);
  jQuery.ajax({
    url: url[0] === '/' ? baseUrl_online + url : url,
    type: 'post',
    // timeout: 1000000, //超时时间设置，单位毫秒
    data: formData, //new FormData(form),
    // async: false,
    cache: false,
    processData: false,
    contentType: false,
    dataType: 'json',
    success: function (res) {
      typeof then === 'function' && then(res);
    },
    error: function (res) {
      // console.error(arguments);
      typeof then === 'function' && then(res, true);
    },
    /* complete() {
        console.error(arguments);
    } */
  });
};

$.update = function () {
  $.post('newMyInfo', {userId: G.local('userId')}, (res, err) => {
    if (err) return;
    lastUpdate = false;
    res = res.items[0];
    if (!res) {
      return alert('您的身份貌似失效了, 请重新登录！'), G.app.exit();
    }
    ;
    if (G.local('userId') !== (res.userId += '')
      || G.local('roleId') !== (res.roleId += '')
      || G.local('loginName') !== (res.userName += '')
      || G.local('loginAccount') !== (res.phoneNumber += '')
    ) {
      localStorage.setItem("userId", res.userId);
      localStorage.setItem("roleId", res.roleId);
      localStorage.setItem("loginName", res.userName);
      localStorage.setItem("loginAccount", res.phoneNumber);
      alert('您的信息已经变更,将为您刷新数据！');
      window.location.reload(true);
    }
    ;
  });
};
